package com.han.dao.abstraction.product;

import java.sql.SQLException;
import java.util.ArrayList;
import javax.naming.NamingException;
import com.han.bom.Exam;
import com.han.bom.ExamResponse;
import com.han.bom.Student;

public interface GenericExamResponseDAO {
	public ArrayList<String> retrieveAllResponses(String profId)
			throws SQLException, ClassNotFoundException, NamingException;

	public ExamResponse retrieveResponseById(String erId) throws SQLException,
			ClassNotFoundException, NamingException;

	public ArrayList<ExamResponse> retrieveResponsesByStudentAndExam(
			String studentId, Exam exam) throws SQLException,
			ClassNotFoundException, NamingException;

	public ArrayList<String> retrieveExamsTaken(String studentId)
			throws SQLException, ClassNotFoundException, NamingException;

	public ArrayList<ExamResponse> retrieveExamsMissed(String studentId)
			throws SQLException, ClassNotFoundException, NamingException;

	public ArrayList<ExamResponse> retrieveMissedRealExamsByKeyword(String key,
			String studentId) throws SQLException, ClassNotFoundException,
			NamingException;

	public ArrayList<ExamResponse> retrieveRealExamsTakenByKeyword(String key,
			String studentId) throws SQLException, ClassNotFoundException,
			NamingException;

	public ArrayList<ExamResponse> retrievePracticeExamsTakenByKeyword(
			String key, String studentId) throws SQLException,
			ClassNotFoundException, NamingException;

	public int retrieveResponseCountByStudentAndExam(String studentId,
			String examId) throws SQLException, ClassNotFoundException,
			NamingException;

	public boolean insertExamResponse(Student student, boolean taken)
			throws ClassNotFoundException, SQLException, NamingException;

	public boolean updateExamResponseGrade(ExamResponse response)
			throws ClassNotFoundException, SQLException, NamingException;

	public boolean updateExamResponseStatus(ExamResponse response)
			throws ClassNotFoundException, SQLException, NamingException;

	public boolean updateExamResponses(ExamResponse response)
			throws ClassNotFoundException, SQLException, NamingException;

	public boolean deleteExamResponses(String examresponseid)
			throws ClassNotFoundException, SQLException, NamingException;

	public boolean submitResponses(ExamResponse response) throws SQLException,
			NamingException;
}
